/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servlets;
import MiniProjet.gestionnaires.GestionnaireActeurs;
import MiniProjet.gestionnaires.GestionnaireFilms;
import MiniProjet.gestionnaires.GestionnaireGenres;
import MiniProjet.gestionnaires.GestionnaireRealisateurs;
import MiniProjet.gestionnaires.GestionnaireRubriques;
import MiniProjet.gestionnaires.GestionnaireUtilisateurs;
import MiniProjet.modeles.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import javax.ejb.EJB;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.validator.constraints.Email;

/**
 *
 * @author Sami
 */
@WebServlet(name = "ServletFormulaires", urlPatterns = {"/ServletFormulaires"})
public class ServletFormulaires extends HttpServlet {
    @EJB
    private GestionnaireRubriques gestionnaireRubriques;


    @EJB
    private GestionnaireActeurs gestionnaireActeurs;
    @EJB
    private GestionnaireGenres gestionnaireGenres;
    @EJB
    private GestionnaireRealisateurs gestionnaireRealisateurs;
    @EJB
    private GestionnaireFilms gestionnaireFilms;



    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {


          String action = request.getParameter("action");
          String delete = request.getParameter("delete");

            if (request.getParameter("action") != null) {



             if(action.equals("creerRubrique")){
                 String nom_rub_recu = request.getParameter("nom_rub");
                 if (nom_rub_recu.length() >= 4 ){
                     if(gestionnaireRubriques.estDuplique(nom_rub_recu) == null){
                         gestionnaireRubriques.creeRubrique(nom_rub_recu);
                         request.setAttribute("add_OK", "Rubrique ajoutée avec succès!");
                     }else{
                         request.setAttribute("rub_exite_deja", "Cette rubrique existe déja!");
                     }
                     
                     
                 }else{
                     request.setAttribute("txt_court", "Le nom de la rubrique est trop court !");
                  }

            }
              if(action.equals("creerActeur")){
                 String nomActeur = request.getParameter("nom_act");
                 String prenomActeur = request.getParameter("prenom_act");
                 String descActeur = request.getParameter("desc_act");


                  if((nomActeur.length()<2) || (prenomActeur.length()<2) || (descActeur.length() <2)){
                    request.setAttribute("txt_court", "Veuillez remplir tous les attributs !");
                  }
                  else {

                        gestionnaireActeurs.creeActeur(nomActeur, prenomActeur, descActeur);
                     
                  }

              }
             // Affichage acteurs
             if(action.equals("TousLesActeurs")){
                 Collection<Acteur> collect_act = new ArrayList<Acteur>();
                  collect_act = gestionnaireActeurs.getAllActeurs();
                  if(collect_act.size() == 0){
                      request.setAttribute("liste_act_vide","Aucun acteur dans la base de données!");
                  }else{
                       request.setAttribute("listeActeurs", collect_act);

                  }


              }
             //Affichage realisateurs
             if(action.equals("afficherRealisateurs")){
                 Collection<Realisateur> collect_real = new ArrayList<Realisateur>();
                  collect_real = gestionnaireRealisateurs.getAllRealisateurs();
                  if(collect_real.size() == 0){
                      request.setAttribute("liste_real_vide","Aucun r&eacte;alisateur dans la base de données!");
                  }else{
                       request.setAttribute("listeRealisateurs", collect_real);

                  }


              }

              //Affichage genre
             if(action.equals("afficherGenres")){
                 Collection<Genre> collect_genre = new ArrayList<Genre>();
                  collect_genre = gestionnaireGenres.getAllGenres();
                  if(collect_genre.size() == 0){
                      request.setAttribute("liste_genre_vide","Aucun genre dans la base de données!");
                  }else{
                       request.setAttribute("listeGenres", collect_genre);

                  }


              }

             //creation realisateur
             if(action.equals("creerRealisateur")){
                 String nomReal = request.getParameter("nom_real");
                 String prenomReal = request.getParameter("prenom_real");
                 String descReal = request.getParameter("desc_real");


                  if((nomReal.isEmpty()) || (prenomReal.isEmpty()) || (descReal.isEmpty())){
                    request.setAttribute("txt_court", "Veuillez remplir tous les attributs !");
                  }
                  else {
                        gestionnaireRealisateurs.creeRealisateur(nomReal, prenomReal, descReal);
                  }

              }
             // Partie de gestion des genres
             if(action.equals("creerGenre")){
                 String nomGenre = request.getParameter("nom_genre");
                    if((nomGenre.isEmpty())){
                    request.setAttribute("txt_court", "Texte trop court! Veuillez indiquer le genre &agrave; ajouter !");
                  }
                  else {
                        gestionnaireGenres.creeGenre(nomGenre);
                  }

              }
             // Partie affichages des rubriques
             if(action.equals("afficherRubriques")){
                 Collection<Rubrique> collect_rub = new ArrayList<Rubrique>();
                  collect_rub = gestionnaireRubriques.getAllRubriques();
                  if(collect_rub.size() == 0){
                      request.setAttribute("liste_rub_vide","Aucune rubrique dans la base de données!");
                  }else{
                       request.setAttribute("listeRubriques", collect_rub);

                  }


              }




 }
          if(request.getParameter(delete) != null){
              String aSUP = delete;
              Rubrique r = gestionnaireRubriques.getRubriqueById(Long.parseLong(aSUP));
              gestionnaireRubriques.removeRub(r);

          }

        RequestDispatcher dp = request.getRequestDispatcher("formulaires.jsp");
        dp.forward(request, response);
        // Après un forward, plus rien ne peut être exécuté après !



    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
